package leetcode_400;

/**
 *@author 周杨
 *ShuffleAnArray_384 返回一个数组的随机数组
 *describe:每次选取一个i 然后在已有的区间内随机选取一个位置  将num[i]放置进去 AC 99%m 
 *2018年7月11日 下午3:10:54
 */
public class ShuffleAnArray_384 {
	private int[] nums;
	public static void main(String[] args) {
		ShuffleAnArray_384 test=new ShuffleAnArray_384(new int[] {1,2,3});
		test.shuffle();
		

	}
	
	public ShuffleAnArray_384(int[] nums) {
        this.nums = nums;
    }
	
	public int[] reset() {
	        return nums;
	}
	    
	/** Returns a random shuffling of the array. */
	public int[] shuffle() {
	    int[] rand = new int[nums.length];
	    for (int i = 0; i < nums.length; i++){
	         int r = (int) (Math.random() * (i+1));//随机选取0-i中的一个数
	         rand[i] = rand[r];//这个数显然是被赋值过的 现在放在这个位置上
	         rand[r] = nums[i];//然后把随机位增加到num[i]上 这样Num[i]就会只出现一次了
	     }
	     return rand;
	}
}
